/************************************************************************

								Heroes IV
					  Copyright 2000, The 3DO Company

	------------------------------------------------------------------
  						       windows_game.h

	$Header: /game/windows_game.h $

	$NoKeywords: $

 ************************************************************************/

#ifndef WINDOWS_GAME_H_INCLUDED
#define WINDOWS_GAME_H_INCLUDED

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "game_application.h"
#include "override_input_handler.h"
#include <map>

class t_windows_game : public t_game_application
{
public:
	t_windows_game( std::string const& class_name, int icon_id );
	  
	std::string         get_class_name() const;
	virtual std::string get_main_window_caption() const = 0;
	void create_window();
protected:
	std::string m_class_name;
	int         m_icon_id;              // id of icon for program
};

inline std::string t_windows_game::get_class_name() const
{
	return m_class_name;
}

// -----------------------------------------------------------------------
// input interception declarations and accessor methods
// -----------------------------------------------------------------------

typedef t_handler_2<t_mouse_event*, bool*>	t_mouse_event_handler;

void get_left_button_handlers( t_mouse_event_handler& down_handler, t_mouse_event_handler& up_handler, t_mouse_event_handler& double_handler );
void get_right_button_handlers( t_mouse_event_handler& down_handler, t_mouse_event_handler& up_handler, t_mouse_event_handler& double_handler );

void set_left_button_handlers( t_mouse_event_handler const& down_handler, t_mouse_event_handler const& up_handler, t_mouse_event_handler const& double_handler );
void set_right_button_handlers( t_mouse_event_handler const& down_handler, t_mouse_event_handler const& up_handler, t_mouse_event_handler const& double_handler );
void set_left_button_down_handler( t_mouse_event_handler const handler );
void set_left_button_up_handler( t_mouse_event_handler const handler );
void set_left_button_double_clicked_handler( t_mouse_event_handler const handler );
void set_right_button_down_handler( t_mouse_event_handler const handler );
void set_right_button_up_handler( t_mouse_event_handler const handler );
void set_right_button_double_clicked_handler( t_mouse_event_handler const handler );

// -----------------------------------------------------------------------


#endif // WINDOWS_GAME_H_INCLUDED


